home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
taropyon
/
splib
/
splib.lzh
/
PRG
/
LHX
/
PATH.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-12-08
|
1KB
|
86 lines
/***********************************************************
path.c -- convert to MS-DOS's pathname
***********************************************************/
#include "lh386.h"
#include <stdio.h>
#include <string.h>
#include "lh.h"
#ifdef __HIGHC__
# pragma On(Align_labels);
#endif
char *form_name(unsigned char *p, int i)
{
int j, kflg;
kflg = 0;
for (j = 0; j < i; j++)
{
if (*p == 0)
break;
else if (kflg)
kflg = 0;
else if (iskanji(*p))
kflg = 1;
else if (strchr("\"*+,./:;<=>?[\\]|\xff", *p) || *p <= ' ' ||
*p == swchar)
*p = '_';
p++;
}
if (kflg)
p--;
*p = '\0';
return (char *) p;
}
void form_identifier(char *p)
{
char *q, *r;
q = strrchr(p, '.');
if (q)
{
*q = '\0';
r = form_name((uchar *) p, 8);
*r++ = '.';
q++;
form_name((uchar *) q, 3);
strcpy(r, q);
} else
{
form_name((uchar *) p, 8);
}
}
void form_path(char *p)
{
char *q, *r;
if (*p == DELIM)
p++;
r = p;
q = strchr(p, DELIM);
while (q)
{
*q = '\0';
form_identifier(p);
r = stpcpy(r, p);
*r++ = DELIM;
p = q + 1;
q = strchr(p, DELIM);
}
form_identifier(p);
strcpy(r, p);
}
/*
#ifdef DEBUG
void main(int argc, char *argv[])
{ form_path(argv[1]);
printf("%s\n", argv[1]); }
#endif
*/